The present invention relates to loopback networking and, more particularly, to a loopback networking implementation that reduces computing device overhead and improves computing device performance.
The Internet Protocol (IP) defines a loopback networking function. Most IP version 4 (IPv4) implementations use 127.0.0.1 as the loopback address while IP version 6 (IPv6) implementations typically use ::1 as the loopback address.
In the loopback function, a network application running on a computing device can address and communicate internally with another process running on the computing device using the loopback address. One common use for the loopback function is internal testing for verification of a process's operability and design. For example, on a computing device that has a web browser and a web server that hosts a website, the website can be accessed by pointing the web browser at the Uniform Resource Locator (URL) http://127.0.0.1 and tested without exposing the website to an external network.
In current versions of network capable operating systems (e.g. Windows, vxWorks), the loopback address is treated in many ways like an IP address of a remote host. The loopback address has an entry in the routing table and belongs to a valid subnet. When an application calls an internal process using the loopback address, the socket application programming interface (socket API) (e.g. Winsock for Windows, sockLib for vxWorks) passes the call to the Transmission Control Protocol/IP (TCP/IP) protocol stack of the operating system, which consults the routing table to make a routing decision, and then forwards the call to a virtual network device driver within the input/output (I/O) subsystem of the operating system en route to the internal process. The virtual network device driver performs additional loopback processing, such as buffering data transmitted between the application and the internal process. The loopback function within these operating system architectures, which invokes the TCP/IP protocol stack and a low level virtual network device driver for loopback processing including routing, buffering and housekeeping, is thus very inefficient.